//
//  ReadMe.swift
//  人员分配等问题介绍
//
//  Created by Apple on 16/10/22.
//  Copyright © 2016年 Apple. All rights reserved.
//

/*
 
- 第三天
 
 
    - 第三天上午回顾
        - 闭包的循环引用(A-闭包-A)设计和解决方案
            - weak var weakSelf = self   == __weak
            - [weak self]     == __weak
            - [unowed self]   == __unsafe_
        - 项目部署到 osChina 上
            - 使用 ssh 公钥
            - 克隆项目
            - 添加忽略文件(一定要先添加)
            - 创建项目(对项目做一些相关的设置)
            - 通过业务需求 明细文件夹(MVVM)
            - MVVM
                - Model
                - View (view controller)
                - ViewModel
            - 创建主控制器(MainVc)
                    - HomeVc
                    - MessageVc
                    - Discover
                    - Profile
            - 添加以上四个子控制器(封装一个公共的方法 -> 用于创建子控制器和添加)
    - 第三天下午内容总结
        - 自定义 HMTabBar (因为我们要显示一个撰写按钮)
            - 手写代码创建HMTabBar 需要实现 init(frame) init(coder)
            - init(coder)为什么(防止其他人使用时候 用于创建 sb xib)
        - 抽取 button 的 extension
        - @objc (使用 oc 的消息运行机制来调用方法)
        - 使用 Swift 中的协议和代理 实现 撰写按钮点击告知 MainVc(闭包|| 直接调用属性)
        - 通过遍历获取HMTabBar subviews 通过 class 获取 对应的 uibarbutton 设置 frame
        - class == 类名.self   || NSClassFromString("私用控件")
        - 自定义 UIBarButtonItem 
        - 创建 tempVc 
        - 自定义 HMNavC
            - 因为设置自定义的返回按钮手势失效
                - 解决 interactivePopGestureRecognizer?.delegate = self
            - 首页还可以滑动 造成不能在正常 push
                - 解决:gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool
            - 按照业务逻辑 首页是 <首页的 tilte  以后显示的 < 返回
                - 解决方法 通过监听导航控制器的 push 方法(重写)
                    - 如果 count> 0 设置左侧按钮 
                        - 如果 count == 1  == 首页的 title
 
 
        
 
 
 
 
 
 
 
 
 
 
 
    - 公司人员分配
        - 客户
        - 老板(发钱)
        - 技术总监(PC 端, 前端, 手机移动端, 产品, UI, 后台, 测试, 文员, 运营)
        - 手机移动端
            - 苹果
            - 安卓
        - H5
            - 开发移动端界面 和 PC 端
 
        - UI 
            - 效果图, 标注图, 切图
        - 后台
            - java php .net
        - 测试 
            - 公司自己开发, jira(收费) bugfree(免费)
        - -文员
            - 数据的录入或者审核
        - 运营
            - 对公司的产品进行宣传
 
 
    - 公司开发流程(如果是给别人做产品)
 
        - 销售和甲方沟通 (成功)
        - 产品和甲方沟通 (形成产品文档)
            - 需求文档
            - 设置原型 (h5, 手机移动端, 后台, UI, 沟通 -> 方案可实施性)
        - UI出效果图(老板或者技术总监审核, 给甲方审核)
        - UI出标注图和切图
        - 移动端和 H5开始开发 后台也会跟进
        - 以上开发完成 
        - 测试人员测试
        - 甲方需要再次审核 -> 返回修改 -> 在审核 -> 直到封板
        - iOS
            - 第一次上线审核的周期 2周左右
            - 以后 一周左右
            - 什么情况会造成审核不过
                - 主线程卡死
                - 如果你上传的是安卓的效果图
                - 你发布的是关于公司的而使用个人账号发布
                - 你的 app 需要登录 (你没有提供测试账号)
                - 你当前 app 使用了支付 (如果是虚拟金币或者你会收费是基于苹果的 就需要强行使用内购)
                    - 如果使用内购 (如果单价100  苹果30  你70)
        - 邓白氏编码(15-20天) 成功
        - 填一些信息
            - 等待苹果回访电话
            
        - 账号 99 199
 
        - 开发人员可能会写项目开发文档
            - 你要写清楚你的项目模块和使用了哪些技术
            - 各种账号
 
 
 
 
    - 项目部署问题
        - 使用 github 码云
         - github 国外 翻墙 (访问慢) -> 收费
         -  速度快 而且是国内产品 主要是不收费
 
    - SSH  (了解)
        - 客户端 生成 rsa 秘钥 + 公钥
        - 然后把rsa公钥 给服务器
        - 项目成功
        - 客户端 随机成功一个 aes (秘钥)
        - 通过aes 把 项目 加密
        - 然后吧项目(通过 aes 加密后的)通过网络发送到远程服务器
        - 然后通过rsa吧 aes 加密 发送到服务器
        - 然后服务器rsa公钥 解密得到aes(非加密)
        - 通过 aes 解密加密后的项目
        - 然后保存项目

 */










